
import json
from django.db import models
from django.core.exceptions import ValidationError


class Template(models.Model):
    name = models.CharField('模板名称', max_length=100, unique=True)
    content = models.JSONField('模板内容')  # 改为 JSONField，自动验证 JSON 格式
    created_at = models.DateTimeField('创建时间', auto_now_add=True)
    updated_at = models.DateTimeField('更新时间', auto_now=True)
    is_default = models.BooleanField('默认模板', default=False)

    class Meta:
        verbose_name = '商品属性模板'
        verbose_name_plural = verbose_name
        ordering = ['-is_default', '-updated_at']

    def __str__(self):
        return self.name

    def get_properties(self):
        """获取解析后的属性列表（直接返回 content，无需解析）"""
        return self.content  # 已经是 Python dict/list，无需 json.loads

    @classmethod
    def get_default_template(cls):
        """获取默认模板"""
        return cls.objects.filter(is_default=True).first()

    def save(self, *args, **kwargs):
        """保存前自动验证（JSONField 会自行校验）"""
        self.full_clean()
        super().save(*args, **kwargs)
